﻿#ifndef MYPDU_H
#pragma once
#define MYPDU_H

#include <string.h>
#include <QString>
#include <stdlib.h>
//此.h和.cpp主要包含自定义协议的定义和封装
typedef unsigned int uint;
enum TYPE{
    SEND_MSG = 0x00001001,          //客户端发送消息
    ADD_FRIEND = 0x00001002,        //客户端添加好友
    ADD_FRIEND_S = 0x00001003,      //添加好友成功
    ADD_FRIEND_F = 0x00001004,      //添加好友失败
    LOG_IN = 0x00001005,            //客户端登陆
    LOG_IN_S = 0x00001006,          //登陆失败
    LOG_IN_F = 0x00001007,          //登陆成功
    RES = 0x00001008,               //客户端注册
    RES_S = 0x00001009,             //注册成功
    RES_F = 0x0000100a,             //注册失败
    DESTROY = 0x0000100b,           //客户注销消息
    DESTROY_S = 0x0000100c,         //客户注销成功
    ONLINE = 0x0000100e,            //有人上线
    OFF_ONLINE = 0x0000100f,        //有人下线
    MSG_SEND,                       //客户端发送了消息
    MSG_RECV,                       //客户端有消息接收
    FILE_REQUEST,                   //发送文件请求
    FILE_RESPOND_AGREE,             //对方同意接收文件
    FILE_RESPOND_REFUSE,            //对方拒绝接收文件
    SECURE_REQUEST,                 //密保安全问题询问请求
    SECURE_RESPOND_S,               //安全问题正确
    SECURE_RESPOND_F,               //安全问题错误
    RESET_PWD,                      //重置密码请求
    RESET_PWD_S,                    //重置密码成功
    RESET_PWD_F,                    //重置密码失败
    FIND_INFO,                      //查询个人信息
    SEND_IMG,                       //发送图片
    SEND_MOVE,                      //发送抖动
    MEDIA_REQUEST,                  //视频请求
    MEDIA_REQUEST_AGREE,            //视频请求同意
    MEDIA_REQUEST_REFUSE,           //视频请求拒绝
    REQUEST_OFFLINELOG,             //请求获取离线消息
    REG_GROUP,                      //注册群聊
    REG_GROUP_S,                    //注册群聊成功
    GROUP_MSG,                      //群聊消息
    GROUP_FILE,                     //传输文件
    GROUP_FILE2,                    //文件传输完毕
    GROUP_FILE3,                    //文件传输开始
    GROUP_FILE4,                    //文件传输失败
    GROUP_ADDPERSON,                //邀请成员
    LOAD_GROUP_PERSON,              //加载群成员
    GROUP_NOTIFY,                   //群公告消息
    LOAD_GROUP_RECORD,              //获取聊天记录
};
struct PDU{
    uint maxSize;       //数据包大小
    uint msgType;       //协议类型(例如是发消息还是加好友)
    uint dataSize;      //数据大小
    char friendId[30];  //用于接收朋友的id
    char data[255];     //额外数据
};
struct userInfo
{
    char name[20];
    char pwd[20];
    int online;//0为离线  1为在线
};
struct userInfo2
{
    char id[20];
    char nickname[40];
    char sex[4];
    char age[3];
    char imgurl[255];
    char persig[255];
    int praise;
    char birthday[255];
    char star[20];
    char address[255];
    char phone[12];
};
struct userInfo3
{
    char uname[40];
    char uhead[255];
};
struct groupinfo
{
    char gname[40];
    char gid[20];
    char ghead[255];
    char gnotify[1024];
    char gfile[255];
    char gperson[255];
    char gimg[255];
};

PDU* makePDU(int dataSize);
#endif // MYPDU_H
